home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre4.z / postgre4 / src / utils / adt / oid.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  1.6 KB  |  91 lines

  1. /*
  2.  * oid.c --
  3.  *    Functions for the built-in type ObjectId.
  4.  */
  5.  
  6. #include "tmp/postgres.h"
  7.  
  8. RcsId("$Header: /private/postgres/src/utils/adt/RCS/oid.c,v 1.7 1991/04/28 09:14:21 cimarron Exp $");
  9.  
  10. #include "utils/palloc.h"
  11.  
  12.  
  13.         /* ========== USER I/O ROUTINES ========== */
  14.  
  15. /*
  16.  *    oid8in        - converts "num num ..." to internal form
  17.  *
  18.  *    Note:
  19.  *        Fills any nonexistent digits with NULL oids.
  20.  */
  21. ObjectId *
  22. oid8in(oidString)
  23.     char    *oidString;
  24. {
  25.     register ObjectId    (*result)[];
  26.     int            nums;
  27.  
  28.     if (oidString == NULL)
  29.         return(NULL);
  30.     result = (ObjectId (*)[]) palloc(sizeof(ObjectId [8]));
  31.     if ((nums = sscanf(oidString, "%ld%ld%ld%ld%ld%ld%ld%ld",
  32.                *result,
  33.                *result + 1,
  34.                *result + 2,
  35.                *result + 3,
  36.                *result + 4,
  37.                *result + 5,
  38.                *result + 6,
  39.                *result + 7)) != 8) {
  40.         do
  41.             (*result)[nums++] = 0;
  42.         while (nums < 8);
  43.     }
  44.     return((ObjectId *) result);
  45. }
  46.  
  47. /*
  48.  *    oid8out    - converts internal form to "num num ..."
  49.  */
  50. char *
  51. oid8out(oidArray)
  52.     ObjectId    (*oidArray)[];
  53. {
  54.     register int        num;
  55.     register ObjectId    *sp;
  56.     register char        *rp;
  57.     char            *result;
  58.     extern int        ltoa();
  59.  
  60.     if (oidArray == NULL) {
  61.         result = (char *) palloc(2);
  62.         result[0] = '-';
  63.         result[1] = '\0';
  64.         return(result);
  65.     }
  66.  
  67.     /* assumes sign, 10 digits, ' ' */
  68.     rp = result = (char *) palloc(8 * 12);
  69.     sp = *oidArray;
  70.     for (num = 8; num != 0; num--) {
  71.         ltoa((long) *sp++, rp);
  72.         while (*++rp != '\0')
  73.             ;
  74.         *rp++ = ' ';
  75.     }
  76.     *--rp = '\0';
  77.     return(result);
  78. }
  79.  
  80.  
  81.          /* ========== PUBLIC ROUTINES ========== */
  82.  
  83.      /* (see int.c for comparison/operation routines) */
  84.  
  85.  
  86.          /* ========== PRIVATE ROUTINES ========== */
  87.  
  88. /*
  89.  * ObjectIdIsValid moved to postgres.h -cim 4/27/91
  90.  */
  91.